//package com.sq.goodline.task;
//
//import java.io.File;
//
//import javax.annotation.Resource;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.scheduling.annotation.EnableScheduling;
//import org.springframework.scheduling.annotation.Scheduled;
//
//import com.aliyun.oss.ClientBuilderConfiguration;
//import com.aliyun.oss.OSS;
//import com.aliyun.oss.OSSClientBuilder;
//import com.aliyun.oss.common.auth.CredentialsProvider;
//import com.aliyun.oss.common.auth.DefaultCredentialProvider;
//import com.aliyun.oss.common.comm.SignVersion;
//import com.aliyun.oss.model.PutObjectRequest;
//import com.aliyun.oss.model.PutObjectResult;
//import com.sq.goodline.config.JobConfig;
//import com.sq.goodline.service.MailService;
//
//import lombok.extern.slf4j.Slf4j;
//
//@Slf4j
//@Configuration
//@EnableScheduling
//public class VosVidioUploadTask {
//
//    @Resource
//    private JobConfig jobConfig;
//
//    @Autowired
//    private MailService mailService;
//    
//    /**
//     * 录音源文件rec，由定时任务上传oss
//     * bucketName:goodline
//     */
//    @Scheduled(cron = "${job.recordUploadTaskCron}")
//    private void recordUploadTask(){
//    	String mailSubject="录音文件上传OSS";
//		int uploadNum=0;
//		StringBuffer mailContext = new StringBuffer();
//		String path = "";
//		String objectName="";
//    	try {
//    		File file = new File(jobConfig.getRecordFilePath());
//        	if(file.exists()&&file.listFiles().length>0){
//    			for(File wavFile:file.listFiles()) {
//    				if(wavFile.getName().endsWith(".rec")==false) {
//    					continue;
//    				}
//    				/**
//    				 * vos录音命名规范如下：
//录音文件是 20170116111219-1087_0-1088_0-172.16.5.59-172.16.5.127-331606.rec，
//名称解释为：时间-主叫号码_类型（0 为话机、1 为网关）-被叫号码_类型（0 为话机、1 为网关）-主叫IP-被叫IP-话单的flowno值。 
//    				 */
//					path = wavFile.getAbsolutePath();
//					log.debug("开始上传文件：{}",path);
//					
//					if(path.startsWith("\\")||path.startsWith("/")) {
//						//linux环境
//						objectName=path;
//					}else {
//						//windows环境
//						objectName=path.substring(path.indexOf(":")+1);
//					}
//					log.debug("objectName:{}",objectName);
//					
//					if(fileUploadOss(wavFile,objectName)) {//单个文件上传OSS
//						uploadNum=uploadNum+1;
//						if(jobConfig.isDeleteLocalFile()) {//上传成功后，删除本地文件 
//							wavFile.delete();
//						}
//					}else {
//						mailContext.append("\r\n上传OSS失败："+path);
//					}
//    			}
//    		}else {
//    			log.error("指定目录不存在,或无文件：{}",jobConfig.getRecordFilePath());
//    			mailContext.append("指定目录不存在,或无文件:"+jobConfig.getRecordFilePath());
//    		}
//    	} catch (Exception e) {
//			log.error("上传oss异常",e);
//			mailContext.append("录音文件上传OSS失败:\r\n  本地文件："+path+"\r\n  失败原因："+e.getMessage());
//		}finally {
//			if(uploadNum>0) {
//				mailContext.append("上传OSS成功文件数量："+uploadNum);
//			}
//			mailService.sendSimpleMail(mailSubject, mailContext.toString());
//			log.info("处理完毕");
//		}
//    }
//    
//    /**
//     * 文件上传oss
//     * @param wavFile 本地文件绝对路径
//     * @param objectName
//     * @throws Exception
//     */
//    private boolean fileUploadOss(File wavFile,String objectName){
//    	CredentialsProvider credentialsProvider = new DefaultCredentialProvider(jobConfig.getAccessKeyId(), jobConfig.getAccessKeySecret());
//   	 // 创建OSSClient实例。
//       ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
//       clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
//       OSS ossClient = OSSClientBuilder.create()
//       .endpoint(jobConfig.getEndpoint())
//       .credentialsProvider(credentialsProvider)
//       .clientConfiguration(clientBuilderConfiguration)
//       .region(jobConfig.getRegion())               
//       .build();
//
//       try {
//           // 创建PutObjectRequest对象。
//           PutObjectRequest putObjectRequest = new PutObjectRequest(jobConfig.getBucketName(), objectName, wavFile);
//           // 创建PutObject请求。
//           PutObjectResult result = ossClient.putObject(putObjectRequest);  
//           log.debug("requestId:",result.getRequestId());
//           log.info("本地文件{}上传OSS完毕：{}",wavFile.getAbsolutePath(),objectName);
//           
//           return true;
//       } catch (Exception oe) {
//    	   log.error("本地文件:{},ObjectName：{}",wavFile.getAbsolutePath(),objectName);
//           log.error("上传Oss异常:" , oe);
//           return false;
//       }finally {
//           if (ossClient != null) {
//               ossClient.shutdown();
//           }
//       }
//    }
//}
